package com.nb.mapper;

import com.nb.dto.nurse.NurseInfoDTO;
import com.nb.entity.NursingRecord;
import com.nb.vo.nurse.AllPatientInfoVO;
import com.nb.vo.nurse.NeedHelpVO;
import com.nb.vo.nurse.NurseInfoVO;
import com.nb.vo.patient.OrderVO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

@Mapper
@Repository
public interface NurseMapper {

    List<AllPatientInfoVO> getAllPatientInfoList();

    List<NeedHelpVO> getNeedHelpList();

    /**
     * 根据用户ID获取护士信息
     * @param userId 用户ID
     */
    NurseInfoVO getNurseInfoById(Integer userId);

    /**
     * 更新护士信息
     * @param nurseInfoDTO 护士信息数据传输对象
     */
    void updateNurseInfo(NurseInfoDTO nurseInfoDTO);

    /**
     * 根据用户ID获取护士ID
     * @param userId 用户ID
     * @return 护士ID
     */
    Integer getNurseIdByUserId(@Param("userId") Integer userId);


    /**
     * 根据患者ID获取最新的已就诊订单ID
     * @param patientId 患者ID
     * @return 最新的已就诊订单ID，如果找不到则返回null
     */
    Integer getLatestVisitedOrderIdByPatientId(@Param("patientId") Integer patientId);


    /**
     * 插入护理记录
     * @param record 护理记录实体
     */
    void insertNursingRecord(NursingRecord record);

    /**
     * 获取所有患者的未缴费订单
     * @return 订单视图对象列表
     */
    List<OrderVO> getAllOrdersList();

    /**
     * 根据用户ID更新用户头像路径
     * @param userId 用户ID
     * @param avatarPath 头像的相对访问路径
     * @return 影响行数
     */
    int updateUserAvatar(@Param("userId") Integer userId, @Param("avatarPath") String avatarPath);

    /**
     * 更新订单护理状态为已诊疗
     * @param orderId 订单ID
     * @return 影响行数
     */
    int updateOrderNursingStatus(@Param("orderId") Integer orderId);
}
